#ifndef __M_UTIL_H__
#define __M_UTIL_H__
/*实用工具类实现
    1.获取系统时间
    2.获取文件大小
    3.创建目录
    4.获取文件所在目录
*/
#include <iostream>
#include <ctime>
#include<unistd.h>
#include<sys/stat.h>
namespace viclog
{
    namespace util
    {
        
        class Date
        {
        public:
        //获取系统时间
            static size_t now()//静态成员接口，通过类名+作用域直接访问
            {
                return (size_t)time(nullptr);
            }
        };

        class File
        {
            public:
            //判断文件是否存在
            static bool exists(const std::string &pathname)
            {
                //return (access(pathname.c_str(),F_OK)==0);
                struct stat st;
                if(stat(pathname.c_str(),&st)<0)
                {
                    return false;
                }
                return true;

            }
            //获取文件所在目录
            static std::string path(const std::string &pathname)
            {
                size_t pos=pathname.find_last_of("/\\");
                if(pos==std::string::npos) return ".";
                return pathname.substr(0,pos+1);
            }
            //创建目录
            static void createDirectory(const std::string &pathname)
            {
                size_t pos=0,index=0;
                while(index<pathname.size())
                {
                    pos=pathname.find_first_of("/\\",index);
                    if(pos==std::string::npos) mkdir(pathname.c_str(),0777);
                    std::string parent_dir=pathname.substr(0,pos+1);
                    //if(parent_dir=="."||parent_dir=="..") continue;
                    if(exists(parent_dir)==true) 
                    {
                        index=pos+1;
                        continue;
                    }
                    mkdir(parent_dir.c_str(),0777);
                    index=pos+1;
                }
            }
        };
    }
}
#endif